import numpy as np
import pandas as pd
from pandas import Series, DataFrame

df1 = DataFrame( { "key":[ 1, 2, 3 ], "city":[ "北京", "上海", "广州" ] } )

df2 = DataFrame( { "key":[ 4, 5, 3 ], "capital":[ "华盛顿", "莫斯科", "东京" ] } )

print( df1 )
print( df2 )
'''
  city  key
0   北京    1
1   上海    2
2   广州    3
  capital  key
0     华盛顿    4
1     莫斯科    5
2      东京    3
'''

df3 = pd.merge( df1, df2 )
print( df3 )
'''
  city  key capital
0   广州    3      东京
这个merge和sql有点像，key相当于外键，寻找外键的相同的值拿出来。
'''
'''
merge方法的参数解释：
    on = "key" 指定按照哪一个列进行合并
    how = "inner" inner:默认值，会使用两边都有的列
        right:以右边的DataFrame为基准，进行merge
        left:以左边的DataFrame为基准，进行merge
'''
df4 = pd.merge( df1, df2, on = "key", how = "left" )
print( df4 )
'''
  city  key capital
0   北京    1     NaN
1   上海    2     NaN
2   广州    3      东京
'''
df5 = pd.merge( df1, df2, on = "key", how = "right" )
print( df5 )
'''
  city  key capital
0   广州    3      东京
1  NaN    4     华盛顿
2  NaN    5     莫斯科
'''
df6 = pd.merge( df1, df2, on = "key", how = "outer" )
print( df6 )
''' 将所有的key列出，将左右DataFrame进行merge，确实的就是nan
  city  key capital
0   北京    1     NaN
1   上海    2     NaN
2   广州    3      东京
3  NaN    4     华盛顿
4  NaN    5     莫斯科
'''